package oving2;
import java.util.Scanner;
import scravaTurtleGraphics.STG;
public class calc {
	public static void performOperation(char ch){
		double a=0.0;
		if(ArgumentStack.arguments.length>0){
			a=ArgumentStack.arguments[ArgumentStack.arguments.length-1];
		}
		double b =0.0;
		if(ArgumentStack.arguments.length>1){
			b=ArgumentStack.arguments[ArgumentStack.arguments.length-2];
		}
		switch(ch){
			case '+':
				ArgumentStack.pop(0.0);
				ArgumentStack.pop(0.0);
				ArgumentStack.push(a+b);
				break;
			case '-':
				ArgumentStack.pop(0.0);
				ArgumentStack.pop(0.0);
				ArgumentStack.push(b-a);
				break;
			case '*':
				ArgumentStack.pop(1.0);
				ArgumentStack.pop(1.0);
				ArgumentStack.push(a*b);
				break;
			case '/':
				ArgumentStack.pop(1.0);
				ArgumentStack.pop(1.0);
				ArgumentStack.push(b/a);
				break;
			case ',':
				ArgumentStack.arguments=ArgumentStack.copyArray(ArgumentStack.arguments,(ArgumentStack.arguments.length+1));
				ArgumentStack.arguments[ArgumentStack.arguments.length-1]=ArgumentStack.peek(0.0);
				break;
			case '.':
				ArgumentStack.pop(0.0);
				break;
			case '~':
				double temp= ArgumentStack.arguments[ArgumentStack.arguments.length-2];
				ArgumentStack.arguments[ArgumentStack.arguments.length-2]=ArgumentStack.peek(0.0);
				ArgumentStack.arguments[ArgumentStack.arguments.length-1]=temp;
				break;
			case 'f':
				STG.move(a);
				break;
			case 't':
				STG.turn(a);
				break;
			case 'u':
				STG.up();
				break;
			case 'd':
				STG.down();
				break;
			case 'h':
				STG.home(false);
				break;
			case 'c':
				double c=ArgumentStack.arguments[ArgumentStack.arguments.length-3];
				double d=ArgumentStack.arguments[ArgumentStack.arguments.length-4];
				STG.setColor(d, c, b, a);
				break;
			case 'w':
				STG.setWidth((int)a);
				break;
			case 'e':
				ArgumentStack.arguments=ArgumentStack.copyArray(ArgumentStack.arguments,0);
				break;
			case 'b':
				STG.bow(b,a);
				break;
			default:
				System.err.println("Operator gjenkjennes ikke");
				break;
		}
	}
	public static void handleInput(String arg){
		if(arg.length()>0){
			try{
				double a= Double.parseDouble(arg);
				ArgumentStack.push(a);

			}
			catch(NumberFormatException e){
				char c=arg.charAt(0);
				ArgumentStack.print("[",",","]");
				performOperation(c);
				

			}
		}
		else{
			System.err.println("Input is required");
		}
		
	}
	public static void splitAndHandleInput(String arg){
		String[]s = arg.split(" ");
		for(int i=0;i<s.length;i++){
			handleInput(s[i]);
			
		}
	}

	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
	
		while(sc.hasNextLine()){
			splitAndHandleInput(sc.nextLine());
			if(ArgumentStack.arguments.length>0){
				System.out.println("="+ArgumentStack.arguments[0]);
			}
			

		}
		
	
	}

}

